package gov.guuiwaternow.list;

import java.util.ArrayList;
import java.util.HashMap;

import gov.guuiwaternow.view.ArisuWebView;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import gov.guuiwaternow.list.R;

/**
 * 
 * @author 최진욱/choijinwook84@gmail.com
 * @since 2011-10-07
 * 아리수 앱 구동시에 처음 실행되는 Activity입니다.
 *
 */
public class main extends Activity {
	
	/**
	 * 리스트로 보여줄 정수장의 이름을 저장할 인스턴스 변수
	 */
	private String[] arisuListStrArr;
	
	/**
	 * 리스트 뷰(View)에 담을 데이터를 저장할 인스턴스 변수
	 */
	private SimpleAdapter simpleAdapter ;
	
	/**
	 * 리스트 뷰(View)객체의 레퍼런스 변수
	 */
	private ListView arisuListView ;
	
	/**
	 * 리소스를 담을 Resources객체의 레퍼런스 변수
	 */
	private Resources res;
	
	/** Called when the activity is first created. */
	@Override
    public void onCreate(Bundle savedInstanceState) {
        /*
         * 상위 객체인 Activity 객체의 함수인 onCreate에 Bundle객체를
         * 전달합니다.
         * */
		super.onCreate(savedInstanceState);
		
		/*
		 * String 및 Array등으로 xml에 저장되어있는 정보들을 가져와
		 * Resources객체의 레퍼런스 변수에 저장합니다.
		 * */
		res = getResources();
		
		/*
		 * strings.xml 에 저장되어 있는 arisu_list를 가지고 옵니다.
		 * */
		arisuListStrArr = res.getStringArray(R.array.arisu_list);

		/*
		 * HashMap을 닮을 ArrayList를 선언하고 인스턴스를 만듭니다.
		 * */
		ArrayList<HashMap<String,Object>> mList = new ArrayList<HashMap<String,Object>>();		

		/*
		 * 센터의 지역이름과 아이콘을 ArrayList 인스턴스에 담습니다.
		 * */
		for(String iconName:arisuListStrArr) {
			
			/*
			 * 아리수센터의 이름과 Drawable에 존재하는 그림의 주소값을 담을
			 * HashMap 인스턴스를 만듭니다.
			 * */
			HashMap<String,Object> item = new HashMap<String,Object>();
			
			/*
			 * 아리수 센터의 이름
			 * 센터이름 앞에 넣을 아이콘
			 * */
			item.put("col1",iconName);
			item.put("col2",R.drawable.aribi);
			
			mList.add(item);   
		}
		
		/*
		 * 화면이될 Layout을 불러와 초기화 합니다.
		 * */
        setContentView(R.layout.main);
        
        
        /*
         * ListView객체에 전달할 SimpleAdapter 객체를 생성하고
         * 레퍼런스 변수와 연결합니다.
         */
        simpleAdapter = new SimpleAdapter( 
        		this, 
        		mList,
        		R.layout.list_item,
        		new String[] { "col1","col2" },
        		new int[] { R.id.text1, R.id.icon_on_list }
        );
        
        /*
         * 초기화된 화면중 리스트를 보여줄 Layout을 찾아 지정해줍니다.  
         */
        arisuListView = (ListView)findViewById(R.id.listView1);
        
        /*
         * 찾은 Layout에 보여줄 데이터를 전달합니다.
         * */
        arisuListView.setAdapter(simpleAdapter);
        
        /*
         * 리스트에 Alpha값을 주기위해서 리스트의 백그라운드를 받아서
         * 그림을 관장하는 Drawable객체에 저장합니다.
         */
        Drawable draw = arisuListView.getBackground();
        
        /*
         * alpha값[투명값]을 줍니다. 알파값 0~255
         */
        draw.setAlpha(220);
        
        /*
         * 화면에 보이는 항목중 아이템을 선택했을 시 행동을 지정합니다.
         * */
        arisuListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        	
        	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        		
        		/*
        		 * Intent를 설정합니다. Intent를 통하여 Click이벤트가 발생했을시
        		 * 호출하게될 화면을 지정하고, 사용자에게 해당화면을 보여주게됩니다.
        		 * Intent 생성자를 통하여 초기화 할 때 인자로는 호출하는 클래스(main.this)와
        		 * 호출당하는 클래스(ArisuWebView.class)를 전달하여 객체를 초기화하고 생성합니다.
        		 * */
                Intent intent = new Intent(main.this, ArisuWebView.class);
                
                /*
                 * Flag값을 전달합니다. 여기에서는 사용자가 선택하게 되는 리스트의
                 * 위치(Rank)를 전달합니다.
                 * */
                intent.setFlags(position);
                
                /*
                 * startActivity함수를 통하여 ArisuWebView.class를 시작합니다.
                 * 이로서 화면세 ArisuWebView가 보여지게됩니다.
                 * */
                startActivity(intent);
                //startActivityForResult(intent, 1);
            }
		});
    }
}